阅读指南
上一节了解了需要提示词工程的场景。现在系统学习Prompt的五要素——角色、任务、上下文、格式、约束,这是设计优秀提示词的核心框架。
一个优秀的Prompt通常包含以下五个要素。不是每个Prompt都需要全部五个,但理解这些要素能帮你设计出更有效的提示词。
告诉AI它应该扮演什么角色,以什么身份回答。AI会根据角色调整回答的专业度、风格和语气,明确角色也能激活模型中相关的知识和能力。
示例
# 没有角色定义
"请帮我分析这段代码"
# 有角色定义
"你是一位资深的Python架构师,拥有10年的大型项目经验。请帮我分析这段代码。"
常用角色模板
| 场景 | 角色定义 |
|---|---|
| 代码审查 | "你是资深软件工程师,擅长代码审查和性能优化" |
| 文案写作 | "你是专业的营销文案撰稿人,擅长撰写吸引人的广告语" |
| 教学辅导 | "你是耐心的编程导师,擅长用简单的语言解释复杂概念" |
| 数据分析 | "你是数据分析专家,擅长从数据中发现洞察" |
明确告诉AI要做什么。模糊的任务会得到模糊的结果,清晰的任务描述是高质量输出的前提。
对比示例
# Bad:模糊的任务
"帮我处理这段文字"
# Good:清晰的任务
"请将以下文字翻译成英文,保持原文的专业性和简洁性"
任务描述的SMART原则
提供必要的背景信息,帮助AI更好地理解任务。AI不知道你的具体情况,需要你提供上下文,充分的上下文能大幅提升回答的相关性和准确性。
示例
# Bad: 缺少上下文
"帮我写一个AI代码助手的产品介绍"
# Good: 提供上下文
"""我们的产品是一款面向程序员的AI代码助手。
目标用户:Python开发者,有1-3年经验
使用场景:日常编码、代码审查、学习新技术
核心优势:比ChatGPT更懂Python生态,响应速度快3倍
请帮我写一个产品介绍,控制在50字以内。"""
明确输出的格式要求。结构化的输出便于程序处理,清晰的格式规范能避免后续解析困难。
示例
# Bad: 没有格式要求
"分析这段代码的问题"
# Good: 明确格式要求
"""分析这段代码的问题,并按以下格式输出:
问题列表:
1. [问题类型] 问题描述(所在行号)
2. [问题类型] 问题描述(所在行号)
建议修改:
[具体的代码修改建议]
优先级:
- 高优先级:必须修复的问题
- 中优先级:建议优化的地方
- 低优先级:可选的改进"""
常用格式
要求:以Markdown列表形式输出
示例:
- 第一点
- 第二点
{
"task": "代码审查",
"issues": [
{"type": "性能", "line": 23, "description": "..."}
]
}
| 指标 | 数值 | 评估 |
|------|------|------|
| ... | ... | ... |
明确告诉AI什么不能做,什么必须遵守,从而防止AI偏离主题、确保输出符合特定规范、避免不必要的冗余。
示例
"""请翻译以下文本成英文。
约束条件:
- 只返回翻译结果,不要添加任何解释
- 不要输出原文
- 保持原文的段落格式
- 专有名词保持原样,不翻译"""
常见约束类型
| 约束类型 | 示例 |
|---|---|
| 长度限制 | "控制在200字以内" |
| 禁止内容 | "不要包含个人观点" |
| 格式限制 | "只返回JSON,不要Markdown" |
| 语言限制 | "只用中文回答" |
| 知识范围 | "仅基于提供的文档,不要使用外部知识" |
掌握了Prompt五要素后,接下来学习结构化输出和常用模板——让AI输出精确的JSON格式,以及拿来即用的Prompt模板库。
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 角色 | Role | /roʊl/ | 告诉AI以什么身份回答问题,激活相关知识和能力 |
| 任务描述 | Task Description | /tæsk dɪˈskrɪpʃn/ | 明确告诉AI需要执行的具体操作 |
| 上下文 | Context | /ˈkɑːntekst/ | 提供背景信息帮助AI更好地理解任务 |
| 输出格式 | Output Format | /ˈaʊtpʊt ˈfɔːrmæt/ | 规定AI回复的结构和样式要求 |
| 约束条件 | Constraints | /kənˈstreɪnts/ | 告诉AI不能做什么、必须遵守什么规则 |